Flash memory devices and prefetch methods thereof

ABSTRACT

A storage device includes a flash memory array and a controller. The flash memory array stores a plurality of user data. After the controller finishes initialization, the controller accesses the user data stored in the flash memory array according to a plurality of host commands and an H2F mapping table, and records a plurality of address information about the user data in a powered-ON access table.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No. 15/954,307, filed on Apr. 16, 2018, which claims the benefit of U.S. Provisional Application No. 62/504,140, filed on May 10, 2017, the entirety of which are incorporated by reference herein.

This application claims priority of Taiwan Patent Application No. 106126215, filed on Aug. 3, 2017, the entirety of which is incorporated by reference herein.

BACKGROUND OF THE INVENTION Field of the Invention

The disclosure relates generally to a flash memory device and a prefetch method thereof.

Description of the Related Art

When a system is powered ON, the solid-state disk is usually powered ON as well. However, the period between when the solid-state disk is powered ON and when the solid-state disk is first accessed is idle time. In order to effectively improve the performance of the solid-state disk, it is necessary to utilize this idle time more effectively for improving the access speed of the solid-state disk.

BRIEF SUMMARY OF THE INVENTION

In an embodiment, a storage device comprises a flash memory array and a controller. The flash memory array stores a plurality of user data. After the controller finishes initialization, the controller accesses the user data in the flash memory array according to a plurality of host commands and an H2F mapping table and records a plurality of address information about the user data in a powered-ON access table.

According to an embodiment of the invention, the size of the powered-ON access table is less than the H2F mapping table.

According to an embodiment of the invention, the address information is a plurality of logic addresses of the user data.

According to an embodiment of the invention, the address information further comprises a plurality of physical addresses of the user data.

According to an embodiment of the invention, the controller records, according to an access order of the user data, the address information in the powered-ON access table.

In another embodiment, a storage device comprises: a flash memory array and a controller. The flash memory array stores a plurality of user data. After the controller finishes initialization, the controller determines whether a powered-ON access table exists in the flash memory array. When the powered-ON access table exists in the flash memory array, the controller prefetches the user data corresponding to the powered-ON access table to a data register.

According to an embodiment of the invention, the controller further prefetches the user data corresponding to the powered-ON access table to the data register according to an H2F mapping table.

According to an embodiment of the invention, when the user data corresponding to the powered-ON access table exceeds the capacity of the data register, the controller only prefetches a part of the user data corresponding to the powered-ON access table to the data register.

According to an embodiment of the invention, the controller sequentially prefetches the user data corresponding to the powered-ON access table to the data register.

According to an embodiment of the invention, after the controller finishes the initialization and before the controller receives a host command, the controller prefetches the user data corresponding to the powered-ON access table to the data register.

In yet another embodiment, a method for building a powered-ON access table of a storage device comprises: executing an initialization; accessing a plurality of user data stored in a flash memory array according to a plurality of host commands and an H2F mapping table; and recording address information of the user data in the powered-ON access table.

In yet another embodiment, a method for utilizing a powered-ON access table of a storage device, comprises: executing an initialization; and determining whether the powered-ON access table exists. When the powered-ON access table exists, prefetching user data corresponding to the powered-ON access table from a flash memory array to a data register.

According to an embodiment of the invention, the method further comprises: accessing the storage device according to a plurality of host commands, the powered-ON access table, and an H2F mapping table.

According to an embodiment of the invention, the method further comprises: when the powered-ON access table does not exist, accessing the storage device according to a plurality of host commands and an H2F mapping table.

A detailed description is given in the following embodiments with reference to the accompanying drawings.

BRIEF DESCRIPTION OF DRAWINGS

The invention can be more fully understood by reading the subsequent detailed description and examples with references made to the accompanying drawings, wherein:

FIG. 1 is a block diagram of a storage device in accordance with an embodiment of the invention;

FIG. 2A is a schematic diagram of a powered-ON access table in accordance with an embodiment of the invention;

FIG. 2B is a schematic diagram of a powered-ON access table in accordance with another embodiment of the invention;

FIG. 3A is a flow chart of a method for building a powered-ON access table in accordance with an embodiment of the invention; and

FIG. 3B is a schematic diagram of a method for utilizing a powered-ON access table in accordance with another embodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

This description is made for the purpose of illustrating the general principles of the invention and should not be taken in a limiting sense. In addition, the present disclosure may repeat reference numerals and/or letters in the various examples. This repetition is for the purpose of simplicity and clarity and does not in itself dictate a relationship between the various embodiments and/or configurations discussed. The scope of the invention is best determined by reference to the appended claims.

It should be understood that the following disclosure provides many different embodiments, or examples, for implementing different features of the application. Specific examples of components and arrangements are described below to simplify the present disclosure. These are, of course, merely examples and are not intended to be limiting. In addition, the present disclosure may repeat reference numerals and/or letters in the various examples. This repetition is for the purpose of simplicity and clarity and does not in itself dictate a relationship between the various embodiments and/or configurations discussed. Moreover, the formation of a feature on, connected to, and/or coupled to another feature in the present disclosure that follows may include embodiments in which the features are formed in direct contact, and may also include embodiments in which additional features may be formed interposing the features, such that the features may not be in direct contact.

FIG. 1 is a block diagram of a storage device in accordance with an embodiment of the invention. As shown in FIG. 1, the storage device 100 includes a flash memory array 101, a dynamic random-access memory (DRAM) 102, and a controller 103, in which the storage device 100 is coupled to a host 10. The host 10 and the storage device 100 construct a system. The storage device 100 generates and maintains a Host Logical-Flash Physical (H2F) mapping table, which records the mapping relationship between the logical address of the user data and the physical address. According to an embodiment of the invention, the storage device 100 may be a solid-state disk having a physical interface of USB, SATA, PATA, or PCIE or adapting a communication protocol of USB, NVME, AHCI, or SCSI.

It is assumed that the data capacity of the storage device 100 is 256 GB, and, after the system is powered ON, the controller 103 provides the user data required by the host 10 according to H2F mapping table and records the mapping relationship of the logic addresses of the user data to physical addresses in a powered-ON access table. It is assumed that the size of a logic address or physical address is 2B such that a logic address or physical address corresponds to 4 kB user data and the controller 103 may build a 8 MB powered-ON access table to record the logic addresses for 16 GB user data. The powered-ON access table records the user data that the host 10 is going to read or write. According to the operating characteristics of the host 10, the user data recorded in the powered-ON access table may be an operation system, applications, or files of computer games. The powered-ON access table is mainly configured to record the user data that the host 10 is going to read, and is sometimes configured to record the user data that the host 10 is going to update or write.

When the host 10 begins initializing, the host 10 also requests the peripheral devices, such as the storage device 100, to initialize. However, the period for the storage device 100 to initialize is less than that for the host 10 to initialize. Therefore, in the period after the storage device 100 finishes the initialization and before the host 10 finishes the initialization (i.e., the idle time), the controller 103 prefetches, according to the address information record in the powered-ON access table, the user data from the flash memory array 101 to the DRAM 102. When the host 10 finishes the initialization and begins prefetching the operation system, that is, when the host 10 is loading up the operation system from the storage device 100, the storage device 100 can rapidly provide the files of the operation system (i.e., the user data) to the host 10 from the DRAM 102 instead of the flash memory array 101 for shortening the data-accessing time.

According to another embodiment of the invention, the record in the powered-ON access table is preferable to be recorded with the reading order of the user data. It is assumed that the controller 103 may not prefetch all the user data corresponding to the powered-ON access table to the DRAM 102 in the idle time. Since the prefetched user data may be first read by the host 10, the controller 103 may continue to load the rest of the user data corresponding to the powered-ON access table to the DRAM 102 during the process of data reading and processing for the host 10 to read such that the purpose of the invention is achieved.

According to another embodiment of the invention, the controller 103 arranges the record in the powered-ON access table according to the parameters of the flash memory array 101 for speeding up the speed of reading the user data, in which the parameters of the flash memory array 101 includes the number of channels and/or the number of chip enable pins.

According to another embodiment of the invention, the size of the user data corresponding to the powered-ON access table is preferable to be less than the capacity of the DRAM 102 such that all the user data corresponding to the powered-ON access table can be surely loaded to the DRAM 102.

According to another embodiment of the invention, when the size of the user data corresponding to the powered-ON access table exceeds the capacity of the DRAM 102, the controller 103 may only prefetch part of the user data corresponding to the powered-ON access table to the DRAM 102. After the prefetched user data is read by the host 10, the user data already stored in the DRAM 102 may be replaced with the rest of the user data corresponding to the powered-ON access table.

FIG. 2A is a schematic diagram of a powered-ON access table in accordance with an embodiment of the invention. According to an embodiment of the invention, the powered-ON access table 200A is configured to record the logic address of the user data. According to the H2F mapping table, the controller 103 may understand that each user data stores in which physical address of the flash memory array 101. 10 user data is illustrated In FIG. 2A, but not intended to be limited thereto.

FIG. 2B is a schematic diagram of a powered-ON access table in accordance with another embodiment of the invention. According to an embodiment of the invention, the powered-ON access table 200B records the logical address and the physical address of the user data as a small H2F mapping table. Therefore, the controller 103 may understand that the mapping relationship of the user data and the physical address of the flash memory array 101. 10 user data is illustrated In FIG. 2B, but not intended to be limited thereto.

FIG. 3A is a flow chart of a method for building a powered-ON access table in accordance with an embodiment of the invention. The method for building a powered-ON access table is adapted in the storage device 100. First, the storage device 100 executes an initialization (Step S10), in which the initialization of the storage device 100 may be triggered by a re-supplied power or a command of the host 10.

The user data is accessed from the flash memory array 101 according to at least one host command and the H2F mapping table (Step S12). When the storage device 100 finishes the initialization, it waits to receive at least one host command from the host 10. It is assumed that the host 10 also finishes the initialization and begins prefetching the operation system, and the host command is mainly a data-reading command for requesting the storage device 100 to provide files of the operation system. The storage device 100 reads the user data (i.e., files of the operation system in the flash memory array 101 according to the host command(s) and the H2F mapping table, and provides the user data to the host 10. In addition to a data-reading command, the host command(s) may also be a data-writing command.

Then, the address of the user data is recorded in the powered-ON access table (Step S14), and whether the powered-ON access table is filled with the address information is determined (Step S16). When the powered-ON access table is not filled with the address information, the address information is continuously recorded; when the powered-ON access table is filled with the address information (for example, 8 MB address information has been stored already), the method for building the powered-ON access table provided in the invention is terminated.

FIG. 3B is a schematic diagram of a method for utilizing a powered-ON access table in accordance with another embodiment of the invention. The method for utilizing the powered-ON access table is adapted in the storage device 100.

The storage device 100 executes the initialization (Step S20), in which the initialization of the storage device 100 can be triggered by a re-supplied power or at least one host command of the host 10.

Then, whether a powered-ON access table exists is determined (Step S22). When the powered-ON access table exists, Step S24 is executed. Otherwise, the method for utilizing the powered-ON access table is terminated.

According to the H2F mapping table, the user data corresponding to the powered-ON access table is sequentially prefetched to a data register (Step S24), in which the data register may be the DRAM 102. When the size of the user data corresponding to the powered-ON access table exceeds the capacity of the data register, part of the user data corresponding to the powered-ON access table is first prefetched to the data register, and the rest of the user data corresponding to the powered-ON access table is then loaded up to the data register. According to an embodiment of the invention, the powered-ON access table is illustrated in FIG. 2B, such that the controller 103 may sequentially prefetch the user data corresponding to the powered-ON access table to the data register without the H2F mapping table.

The storage device 100 is accessed according to the host command(s), the powered-ON access table, and the H2F mapping table (Step S26). The storage device 100 receives the host command(s) from the host 10 and first determines whether the logic address in the host command(s) is recorded in the powered-ON access table. When the logic address in the host command(s) is recorded in the powered-ON access table, the storage device 100 directly provides the user data stored in the data register to the host 10. When the logic address in the host command(s) is not recorded in the powered-ON access table, the storage device 100 accesses the user data stored in the flash memory array 101 according to the host command(s) and the H2F mapping table.

While the invention has been described by way of example and in terms of preferred embodiment, it is to be understood that the invention is not limited thereto. Those who are skilled in this technology can still make various alterations and modifications without departing from the scope and spirit of this invention. Therefore, the scope of the present invention shall be defined and protected by the following claims and their equivalents. 

What is claimed is:
 1. A storage device, comprising: a flash memory array, storing a plurality of user data; and a controller, wherein in a period between that the controller finishes initialization and that the host finishes initialization, the controller accesses the user data in the flash memory array according to a plurality of host commands from the host and an H2F mapping table and records a plurality of address information about the user data in a powered-ON access table, wherein the host begins prefetching the user data accessed in the period by the controller after the host has finished the initialization.
 2. The storage device of claim 1, wherein the size of the powered-ON access table is less than the H2F mapping table.
 3. The storage device of claim 1, wherein the address information is a plurality of logic addresses of the user data.
 4. The storage device of claim 1, wherein the address information further comprises a plurality of physical addresses of the user data.
 5. The storage device of claim 1, wherein the controller records, according to an access order of the user data, the address information in the powered-ON access table.
 6. The storage device of claim 1, wherein a period for the storage device to initialize is less than that for the host to initialize.
 7. The storage device of claim 1, wherein the controller prefetches the user data from the flash memory array to a DRAM in the period.
 8. A storage device, comprising: a flash memory array, storing a plurality of user data; and a controller, wherein in a period between that the controller finishes initialization and that the host finishes initialization, the controller determines whether a powered-ON access table exists in the flash memory array, wherein when the powered-ON access table exists in the flash memory array, the controller prefetches the user data corresponding to the powered-ON access table to a data register, wherein the host begins prefetching the user data from the data register after the host has finished the initialization.
 9. The storage device of claim 8, wherein the controller further prefetches the user data corresponding to the powered-ON access table to the data register according to an H2F mapping table.
 10. The storage device of claim 8, wherein when the user data corresponding to the powered-ON access table exceeds capacity of the data register, the controller only prefetches a part of the user data corresponding to the powered-ON access table to the data register.
 11. The storage device of claim 8, wherein the controller sequentially prefetches the user data corresponding to the powered-ON access table to the data register.
 12. The storage device of claim 8, wherein a period for the storage device to initialize is less than that for the host to initialize.
 13. A method for utilizing a powered-ON access table of a storage device, comprising: executing an initialization; and determining whether the powered-ON access table exists in a period after the storage device finishes initialization and before a host finishes initialization, wherein when the powered-ON access table exists, prefetching user data corresponding to the powered-ON access table from a flash memory array to a data register, wherein the host begins prefetching the user data from the data register after the host has finished the initialization.
 14. The method of claim 13, further comprising: accessing the storage device according to a plurality of host commands, the powered-ON access table, and an H2F mapping table.
 15. The method of claim 13, further comprising: when the powered-ON access table does not exist, accessing the storage device according to a plurality of host commands and an H2F mapping table. 